package Top101K;

/**
 * @Author quan
 * @Description 数组中的逆序对
 * @Date 2023/11/22 12:08
 */
public class BM20_InversePairs {
    public static void main(String[] args) {
        int[] arr = {1,0,0};
        System.out.println(InversePairs(arr));
    }

    /**
     * 在数组中的两个数字，如果前面一个数字大于后面的数字，则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P,
     * 并将P对1000000007取模的结果输出。 即输出P mod 1000000007。 题目保证输入的数组中没有的相同的数字
     * @param nums [1,2,3,4,5,6,7,0]
     * @return  7
     */
    public static int InversePairs (int[] nums) {
        // 1-双层for循环遍历数组，如果nums[j] > nums[j+1],计数res+1；
        // 注意res的类型，如果设置为int，对于值很大的数会超出范围
        long res = 0;
        for (int i = 0; i < nums.length-1; i++) {
            for (int j = i+1; j < nums.length; j++) {
                if(nums[i] > nums[j]){
                    res+=1;
                }
            }
        }
        // 2-对res取模
        // 注意类型转换
        return (int)(res % 1000000007);
    }
}
